package cl.sirvicod.comunicacion.servicios
{
	import cl.sirvicod.comunicacion.comunes.ChannelManager;
	import cl.sirvicod.comunicacion.objetos.PersonaTO;
	
	import mx.collections.ArrayCollection;
	import mx.controls.Alert;
	import mx.messaging.ChannelSet;
	import mx.rpc.events.FaultEvent;
	import mx.rpc.remoting.mxml.RemoteObject;

	public class PersonaRemoteObject extends RemoteObject
	{
		public function PersonaRemoteObject(destination:String = null)
		{ 
			this.destination = "PersonaService";
			this.showBusyCursor = true;
			this.channelSet = ChannelManager.getChannelSet;
			this.addEventListener(FaultEvent.FAULT, doFault);
		}
		
		protected function doFault(resultFault:FaultEvent):void{
			//Alerta.error("El sistema no pudo comunicarse con el servidor. Por favor inténtelo en otro momento o comuníquese con el encargado del sistema."+"\n"+resultFault.fault.faultDetail,"Error de comunicación");			
			if(resultFault.fault.faultDetail != null)
             	Alert.show("El sistema no pudo comunicarse con el servidor. Por favor inténtelo en otro momento o comuníquese con el encargado del sistema."+"\n"+resultFault.fault.faultDetail,"Error de comunicación");
        	else
            	Alert.show(resultFault.fault.rootCause["message"]);
        }
        
        public function obtenerPersonaPorRut(rut:String):PersonaTO
        {
        	this.getOperation("obtenerPersonaPorRut").send(rut);
			return null;
        }
		
		public function obtenerPersonaFullPorRut(rut:String):PersonaTO
		{
			this.getOperation("obtenerPersonaFullPorRut").send(rut);
			return null;
		}
		
		public function obtenerPersonasAutorizadasPorDepto(depto:int):ArrayCollection
		{
			this.operations("obtenerPersonasAutorizadasPorDepto").send(depto);
			return null;
		}
	}
}